export default{
    main
}

// 对数器，看算法是否能通过。


/**
 * @param {*} arr 数组数据,只能判断 数字类型
 * @param {*} fun1 正确的方法
 * @param {*} fun2 自己写的方法
 * 主函数
 */
function main(arr, fun1, fun2) {
    const testTime = 500000;
    const maxSize = 100;
    const maxValue = 100;
    let succeed = true;
    // 测试的次数。
    for (let i = 0; i < testTime; i++) {
        let arr1 = generateRandomArray(maxSize, maxValue);
        let arr2 = copyArray(arr1);
        arr1 = fun1(arr1);
        arr2 = fun2(arr2);
        if(!isEqual(arr1, arr2)){
            succeed = false;
            break;
        }
    }
    return succeed ? "succeed" : "Fucking fucked";
}




/**
 * 
 * @param {*} size 数组最大长度
 * @param {*} value 最大值
 * 
 * 左闭右开  [0, max) + 1 就可以取到了。
 * 产生一个随机长度，随机大小的数组。
 */
function generateRandomArray(size, value) {
    let arr = new Array(Math.floor((size + 1) * Math.random()));
    for (let i = 0; i < arr.length; i++) {
        arr[i] = Math.floor((value + 1) * Math.random());
    }
    return arr;
}


/**
 * 
 * @param {*} arr 被克隆的对象 
 */
 function copyArray(arr) {
    if (arr == null) {
        return null;
    }
    return [].concat(arr);
}


/**
 * 判断是否相等
 * 
 * @param {*} arr1 
 * @param {*} arr2 
 * @returns 对比的结果
 */
function isEqual(arr1, arr2) {
    if ((arr1 == null && arr2 != null ) || (arr1 != null && arr2 == null)) {
        return false;
    }
    if (arr1 == null && arr2 == null) {
        return true;
    }
    if (arr1.length != arr2.length) {
        return false;
    }
    for (let i = 0; i < arr1.length; i++) {
        if (arr1[i] != arr2[i]) {
            return false
        }
    }
    return true;
}